package com.hqully.smartfumehood.mapper;

import com.github.pagehelper.PageInfo;
import com.hqully.smartfumehood.entity.Laboratory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hqully.smartfumehood.entity.dto.LaboratoryDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *     针对数据库表[laboratory]的操作
 * </p>
 * @entity {@link Laboratory}
 * @author liulingyu <br>
 * @date 2022-05-12 17:35 <br>
 * @version 1.0
 */
@Mapper
public interface LaboratoryMapper extends BaseMapper<Laboratory> {

    /**
     * <p>
     *     根据[queryVo]的参数条件查询实验室
     * </p>
     * @date 2022/5/8 9:17 <br>
     * @author liulingyu <br>
     * @param query 查询参数
     * @return {@link PageInfo < LaboratoryDto>} 实验室DTO实体类
     */
    public List<LaboratoryDto> findAllLaboratory(Map query);

    /**
     * <p>
     *     通过单位查询实验室
     * </p>
     * @deprecated 该功能整合至{@link #findAllLaboratory}
     * @date 2022/5/8 9:17 <br>
     * @author liulingyu <br>
     * @param queryVo 查询参数
     * @return  @return {@link PageInfo< Laboratory>} 实验室实体类
     */
    public List<Laboratory> findLaboratoryByUnit(@Param("unit") String unit);

    /**
     * <p>
     *     通过实验室Id查询实验室
     * </p>
     * @deprecated 该功能整合至{@link #findAllLaboratory}
     * @date 2022/5/8 9:17 <br>
     * @author liulingyu <br>
     * @param lid 实验室ID
     * @return  @return {@link PageInfo< Laboratory>} 实验室实体类
     */
    public Laboratory findLaboratoryByLid(@Param("id") String lid);

    /**
     * <p>
     *     添加实验室
     * </p>
     * @date 2022/5/8 9:25 <br>
     * @author liulingyu <br>
     * @param laboratory 实验室实体类
     * @return {@link int}
     */
    public int addLaboratory(Laboratory laboratory);

    /**
     * <p>
     *     通过实验室ID删除实验室
     * </p>
     * @date 2022/5/8 9:25 <br>
     * @author liulingyu <br>
     * @param lid 实验室ID
     * @return {@link int}
     */
    public int deleteLaboratory(@Param("id") String lid);

    /**
     * <p>
     *     更新实验室
     * </p>
     * @date 2022/5/8 9:26 <br>
     * @author liulingyu <br>
     * @param laboratory 实验室实体类
     * @return {@link int}
     */
    public int updateLaboratory(Laboratory laboratory);

}
